18.6 Die Statusleiste  
Eine Statusleiste, die durch die Klasse StatusStrip beschrieben wird, dient dazu, meist am unteren Rand einer Form Informationen bereitzustellen. In manchen Anwendungen wird der Zustand der Tasten angezeigt, in anderen wiederum das Datum oder die Uhrzeit.
Auch StatusStrip ist ein neues Control, das im .NET Framework 2.0 Einzug gehalten hat. Es offeriert uns Möglichkeiten, die vorher nicht möglich waren. Genauso wie in der Symbolleiste können Sie nun auch problemlos weitere Steuerelemente in das Steuerelement integrieren, wenn auch die Auswahl nicht ganz so vielfältig ist:
|
StatusLabel (Klasse ToolStripStatusLabel) |
|
ProgressBar (Klasse ToolStripProgressBar) |
|
DropDownButton (Klasse ToolStripDropDownButton) |
|
SplitButton (Klasse ToolStripSplitButton) |
Alle Unterelemente eines StatusStrip-Objekts sind wie üblich in einer Auflistung enthalten und werden von dieser verwaltet. Die Referenz darauf liefert wieder die Eigenschaft Items, die Collection ist vom Typ ToolStripItemCollection. Natürlich können Sie die Elemente in der Statusleiste auch zur Laufzeit dynamisch hinzufügen. Die Methoden dazu sind hinlänglich bekannt (Add, AddRange, Insert, Remove ...).
18.6.1 Eine Statusleiste bereitstellen  
Das Visual Studio bietet Ihnen zwei Möglichkeiten, um möglichst schnell zu Ergebnissen zu gelangen. Zum einen können Sie die Eigenschaft Items des StatusStrip-Objekts im Eigenschaftsfenster anklicken und damit den Elementauflistungs-Editor öffnen, in dem Sie die Elemente hinzufügen und deren Eigenschaften festlegen. Die andere Alternative wäre das Hinzufügen im Forms Designer. Die Eigenschaften lassen sich dann für das aktuell markierte Statusleistenelement im Eigenschaftsfenster bestimmen. Statusleisten sind, wenn sie in einem Fenster angeboten werden, normalerweise anwendungsspezifisch. Daher finden Sie unterhalb des Eigenschaftsfensters auch keinen Link, um automatisch Statusleistenelemente zu generieren.
Bis auf das ProgressBar-Element können Sie in allen anderen ein Bildchen anzeigen lassen, das Sie der Eigenschaft Image bekannt geben. Wollen Sie neben dem Bildchen auch die Text ausgeben lassen, dürfen sie nicht vergessen, dass die Eigenschaft DisplayStyle auf Image-AndText eingestellt sein muss. Die Anordnung zwischen Bild und Text regelt die Eigenschaft TextImageRelation, TextAlign und ImageAlign regeln die Ausrichtung auf dem übergeordneten Container.
Dass der Anwender mit AllowItemRecorder=True nicht nur die Menü- und Symbolleistenelemente, sondern auch die Statusleistenelemente neu anordnen kann, braucht fast nicht mehr erwähnt zu werden.
18.6.2 Die in der Statusleiste integrierten Steuerelemente  
Die Elemente, die eine ProgressBar, einen SplitButton und einen DropDownButton formen, hatten wir im Zusammenhang mit der Menüleiste betrachtet und unterscheiden sich nicht. Das gängigste Element, ToolStripStatusLabel, weist noch zwei erwähnenswerte Eigenschaften auf. Wie Sie wissen, können Beschriftungsfelder in der Statusleiste optisch hervorgehoben werden, meistens in einem abgesenkten Rahmen. Hierzu dient die Eigenschaft BorderStyle, die vom Typ Border3DStyle ist, eine Enumeration im Namespace System.Windows.Forms. Entscheiden Sie sich für Border3DStyle.Sunken, wird der übliche abgesenkte Rahmen für das Label angezeigt.
Falls Ihnen das nicht sofort gelingt, sollten Sie nicht enttäuscht sein. Sie müssen auch bekannt geben, welche Seitenränder von der Einstellung in BorderStyle profitieren sollen. Standardmäßig ist das keine. Mit der Eigenschaft BorderSites können Sie jede der vier Seiten ausdrücklich zulassen.
Das Ereignis »ItemClicked«
In den meisten Fällen wird eine Statusleiste den Anwender nur mit Informationen über den aktuellen Zustand der Anwendung versorgen. Seltener wird eine Statusleiste auf Benutzeraktionen reagieren. Doch auch diese Möglichkeit haben Sie, denn ein StatusStrip-Objekt stellt mit ItemClicked ein Ereignis bereit, das ausgelöst wird, wenn der Anwender auf ein Element klickt. Die Progressbar ist davon ausgenommen, da sie nicht auf das Ereignis nicht reagiert.
| Public Event ItemClicked As ToolStripItemClickedEventhandler
|
Aufgrund der Namenskonvention ist klar, dass der Ereignishandler im zweiten Parameter ein Objekt vom Typ ToolStripItemClickedEventArgs empfängt. So lang auch der Typbezeichner geraten ist, so wenig hat das Objekt zu bieten. Es gestattet nur auszuwerten, welches Element der Benutzer in der Statusleiste angeklickt hat. Dazu dient die Eigenschaft ClickedItem, die eine Referenz auf ein Objekt vom Typ ToolStripItem liefert. Hier finden Sie übrigens auch die Begründung, weshalb ein Fortschrittsbalken nicht auf ItemClicked reagiert – die Klasse ToolStripProgressbar ist nicht von der abstrakten Klasse ToolStripItem abgeleitet.
|